# a= int(input("请输入一个数字："))
# if  a< 0:
#     print("< 0")
# elif a >0  :
#     print("> 0")
# else:
#     print("= 0")    
    

"""
可有零个或多个 elif 部分，else 部分也是可选的。关键字 'elif' 是 'else if' 的缩写，用于避免过多的缩进。
if ... elif ... elif ... 序列可以当作其它语言中 switch 或 case 语句的替代品。
"""
from tkinter.font import names

"""

 for 循环 不能再删除循环变量，会导致错误
在迭代多项集（如字典或列表）的同时修改其内容，可能会导致一些问题，主要是因为迭代器和集合的内部机制。以下是一些具体的原因：
1.迭代器失效：当你在迭代一个集合时，Python会使用一个迭代器来跟踪当前的位置。如果你在迭代过程中修改了集合（例如添加或删除元素），这可能会导致迭代器失效，从而引发RuntimeError或其他不可预测的行为。
2.索引错乱：对于列表等基于索引的数据结构，在迭代过程中删除元素会导致后续元素的索引发生变化。这可能会导致某些元素被跳过或者重复访问。
3.数据一致性问题：在多线程或多进程环境中，同时迭代和修改集合可能导致数据不一致的问题，使得程序的行为难以预测。
"""
# rows = [1,2,3,4,5]
# for iten in rows:
#     print(iten)
    
 
'''

问题：
这段代码会抛出一个 RuntimeError。因为在迭代过程中，你修改了字典 users（删除了一个键），这会导致迭代器失效。Python不允许你在遍历字典的同时修改它的大小。
'''   
    
# users = {'user1': 'active', 'user2': 'inactive', 'user3': 'inactive'}

# for user, status in users.items():
#     if status == 'inactive':
#         del users[user]  # 删除元素
        
#     for user, status in users.items():
# RuntimeError: dictionary changed size during iteration

        
        
        
        
        
'''
range(start, stop, step)   数字范围
start=1: 起始值（包含）
stop=10: 结束值（不包含）
step=2: 步长，每次递增的值
'''
for i in range(1, 10, 2):  # 1,3,5,7,9
    print(i)
    
    
# a  = ["a", "b", "c"]
# for index in range(len(a)):
#     print(index, a[index])
    
for idex, value in enumerate(range(1, 10, 2)):  # 索引，值
    print(idex, value)
    
    
    
    
"""
enumerate(iterable, start=0)
返回一个枚举对象。iterable 必须是一个序列，或 iterator，或其他支持迭代的对象。 
enumerate() 返回的迭代器的 __next__() 方法返回一个元组，里面包含一个计数值（从 start 开始，默认为 0）和通过迭代 iterable 获得的值。
    
"""
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

# 相等的
def enumerate(iterable, start=0):
    n = start
    for elem in iterable:
        yield n, elem
        n += 1


        
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
    else:
        # 循环到底未找到一个因数
        print(n, 'is a prime number')

name = 1
match name:
    case 400:
        print('xxxxxxxx')
    case 300:
        print('xxxxxxxxxxxx')


"""
注意最后一个代码块：“变量名” _ 被作为 通配符 并必定会匹配成功。如果没有 case 匹配成功，则不会执行任何分支。
"""
def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Something's wrong with the internet"



"""
lambda 
"""


